package cn.bjit.vo;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.math.BigDecimal;
import java.util.List;

/**
 * 购物车类
 */
public class CartVO {
    //购物项
    @JsonProperty("cart_items")
    private List<CartItemVO> cartItems;
    //购买总件数
    @JsonProperty("total_num")
    private Integer totalNum;
    //购物车总价格
    @JsonProperty("total_price")
    private BigDecimal totalPrice;
    //实际支付的价格
    @JsonProperty("real_pay_price")
    private BigDecimal realPayPrice;

    /**
     * 总件数
     */
    public Integer getTotalNum() {
        //如果购物车中有选项
        if (this.cartItems != null) {
            //则，遍历每一个cartItems获取byNum的总和
            int total = this.cartItems.stream().mapToInt(CartItemVO::getBuyNum).sum();
            return total;
        }
        return 0;
    }

    /**
     * 总价格
     */
    public BigDecimal getTotalPrice() {
        BigDecimal amout = new BigDecimal("0");  //3498 +1089
        if (this.cartItems != null) {//2个
            for (CartItemVO cartItemVO : cartItems) {
                //每遍历一次获取到一个子项的总价格
                BigDecimal itemTotalAmount = cartItemVO.getTotalAmount();  //3498  1089
                amout = amout.add(itemTotalAmount);
            }
        }
        return amout;
    }
    /**
     * 计算实际支付的价格
     */
    public BigDecimal getRealPayPrice(){
        BigDecimal amout = new BigDecimal("0");
        if (this.cartItems != null) {//2个
            for (CartItemVO cartItemVO : cartItems) {
                BigDecimal itemTotalAmount = cartItemVO.getTotalAmount();
                amout = amout.add(itemTotalAmount);
            }
        }
        return amout;
    }


    public List<CartItemVO> getCartItems() {
        return cartItems;
    }

    public void setCartItems(List<CartItemVO> cartItems) {
        this.cartItems = cartItems;
    }
}
